<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 字符串  数字  布尔值  undefined  null

      // 一:  隐式转换成数字 的情况
      // Number() 可以实现将括号里边的数据  转换成数字类型 (隐式转换采用该规则)

      console.log(Number(undefined)); // NaN
      console.log(Number(null)); // 0
      console.log(Number(true)); // 1
      console.log(Number(false)); // 0
      // 只有纯数字的字符串 能正常的转成数字,只要含有非数字字符都是隐式转换成 NaN
      console.log(Number("hello3")); // NaN
      console.log(Number("30px")); // NaN
      console.log(Number("120")); // 120
      console.log(Number("     ")); // 0
      console.log(Number("")); // 0

      // 一般 算数运算(+ -  *  / ...) 如果参与的不是数字,会隐式转换成数字类型 参与运算
      // 比较大小时,如果参与的 不是数字,也会隐式转换成数字 进行比较
      console.log(true + 1); // 1+1=>2

      console.log("-----------------------------");
      // 二: 隐式转换成字符串的情况
      // String()可以实现将括号里边的数据  转换成字符串类型 (隐式转换采用该规则)
      // 规律: 带上引号
      console.log(String(true));
      console.log(String(false));
      console.log(String(123.3)); //'123.3'
      console.log(String(undefined)); // 'undefined'
      console.log(String(null)); //'null'

      // 有字符串参与的加法运算,会将参与的其他 数据类型 隐式转换成 字符串类型
      console.log("200" + 120); //'200120'

      console.log("----------------------------------");
      // 三: 隐式转换成布尔值 的情况
      // Boolean()可以实现将括号里边的数据  转换成布尔类型 (隐式转换采用该规则)
      //只有 0 NaN undefined  null ''  5种情况转成false
      console.log(Boolean(0));
      console.log(Boolean(NaN));
      console.log(Boolean(undefined));
      console.log(Boolean(null));
      console.log(Boolean(""));
    </script>
  </body>
</html>
